home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / PROGRAMR / L2C_19.ZIP / L2C.H < prev    next >
C/C++ Source or Header  |  1993-06-25  |  12KB  |  372 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <malloc.h>
  6. #include <stdarg.h>
  7. #include "adslib.h"
  8. #include "adsdlg.h"
  9. //
  10. //
  11. #undef X
  12. #undef Y
  13. #undef Z
  14. #undef T
  15. #define SymExp MemoryCell *
  16. #define Dummy MemoryCell *
  17. #define StrExp char *
  18.  
  19. //
  20. typedef enum {
  21.     False,
  22.     True
  23. } Boolean;
  24.  
  25. typedef enum {
  26.     cCons,
  27.     cNumber,
  28.     cReal,
  29.     cString,
  30.     cSymbol,
  31.     cFunction,
  32.     cOpen,
  33.     cClose,
  34.     cDot,
  35.     cFile,
  36.     cSubr,
  37.     cExSubr,
  38.     cPickSet,
  39.     cEName,
  40.     cUnknown,
  41.     cReserved
  42. } CellTypes;
  43.  
  44.  
  45. typedef struct MemoryCell {
  46.     struct {
  47.         unsigned ID     :  4;
  48.         unsigned Mark   :  1;
  49.         unsigned Point2 :  9;
  50.         unsigned Usable :  1;
  51.     } Flag;
  52.     struct SymExp Next;
  53.     struct SymExp Prev;
  54.     CellTypes CellType;
  55.     union {
  56.         struct {
  57.             StrExp Name;
  58.         } Symbol;
  59.         long   IntValue;
  60.         ads_real RealValue;
  61.         StrExp StrValue;
  62.         struct {
  63.             struct SymExp Car;
  64.             struct SymExp Cdr;
  65.         } Cons;
  66.         struct {
  67.             int    ArgC;
  68.             struct SymExp (*Func)();
  69.         } Func;
  70.         FILE *File;
  71.         ads_name EName;
  72.         ads_name PickSet;
  73.     } Cell;
  74. } MemoryCell;
  75. //
  76. //
  77. typedef struct SelectionSetList {
  78.     ads_name    SelectionSet;
  79.     int         Flag;
  80.     struct SelectionSetList *Next;
  81. } SelectionSetList;
  82. //
  83. typedef struct FileList {
  84.     FILE    *File;
  85.     int     Flag;
  86.     struct FileList *Next;
  87. } FileList;
  88. //
  89. //
  90. //░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░
  91. //
  92. #define MaxSymbol 2003
  93. #define HStep 13
  94.  
  95. typedef struct HashList {
  96.     SymExp  Value;
  97.     Boolean Repr;
  98.     struct  HashList *Next;
  99. } HashList_;
  100.  
  101. typedef struct {
  102.     StrExp  Name;
  103.     struct  HashList *Top;
  104.     Boolean Local;
  105. } HashTable;
  106.  
  107. #define ClearError ERROR = False
  108. #define ErrorTest if (ERROR) return (NULL)
  109. Boolean GetBoolean (SymExp);
  110. Boolean IsFunction (SymExp);
  111. Boolean IsPoint (SymExp);
  112. FILE *GetFile (SymExp);
  113. StrExp GetName (SymExp);
  114. StrExp GetString (SymExp);
  115. SymExp (*GetFunction ())();
  116. SymExp ADS_Acad_colordlg (SymExp, SymExp, ...);
  117. SymExp ADS_Acad_helpdlg (SymExp, SymExp, ...);
  118. SymExp ADS_Acad_strsort (SymExp, SymExp);
  119. SymExp ADS_Action_tile (SymExp, SymExp,...);
  120. SymExp ADS_Add_list (SymExp,...);
  121. SymExp ADS_Ads (SymExp);
  122. SymExp ADS_Alert (SymExp, SymExp);
  123. SymExp ADS_Angle (SymExp, SymExp, SymExp);
  124. SymExp ADS_Angtof (SymExp, SymExp,...);
  125. SymExp ADS_Angtos (SymExp, SymExp,...);
  126. SymExp ADS_Client_data_tile (SymExp, SymExp, ...);
  127. SymExp ADS_Command (SymExp,...);
  128. SymExp ADS_Cvunit (SymExp, SymExp, SymExp, SymExp);
  129. SymExp ADS_Dimx_tile (SymExp, ...);
  130. SymExp ADS_Dimy_tile (SymExp, ...);
  131. SymExp ADS_Distance (SymExp, SymExp, SymExp);
  132. SymExp ADS_Distof (SymExp,...);
  133. SymExp ADS_Done_dialog (SymExp,...);
  134. SymExp ADS_End_image (SymExp);
  135. SymExp ADS_End_list (SymExp);
  136. SymExp ADS_Entdel  (SymExp,...);
  137. SymExp ADS_Entget  (SymExp, SymExp, ...);
  138. SymExp ADS_Entlast (SymExp);
  139. SymExp ADS_Entmake (SymExp,...);
  140. SymExp ADS_Entmod  (SymExp,...);
  141. SymExp ADS_Entnext (SymExp,...);
  142. SymExp ADS_Entsel  (SymExp,...);
  143. SymExp ADS_Entupd  (SymExp,...);
  144. SymExp ADS_Fill_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
  145. SymExp ADS_Findfile (SymExp, SymExp);
  146. SymExp ADS_Get_attr (SymExp, SymExp,...);
  147. SymExp ADS_Get_tile (SymExp,...);
  148. SymExp ADS_Getangle (SymExp,...);
  149. SymExp ADS_Getcorner (SymExp, SymExp,...);
  150. SymExp ADS_Getdist (SymExp,...);
  151. SymExp ADS_Getfiled (SymExp, SymExp, SymExp, SymExp, SymExp);
  152. SymExp ADS_Getint (SymExp,...);
  153. SymExp ADS_Getkword (SymExp,...);
  154. SymExp ADS_Getorient (SymExp,...);
  155. SymExp ADS_Getpoint (SymExp,...);
  156. SymExp ADS_Getreal (SymExp,...);
  157. SymExp ADS_Getstring (SymExp,...);
  158. SymExp ADS_Getvar (SymExp,...);
  159. SymExp ADS_Graphscr (SymExp);
  160. SymExp ADS_Grclear (SymExp);
  161. SymExp ADS_Grdraw (SymExp, SymExp, SymExp, SymExp, ...);
  162. SymExp ADS_Grread (SymExp, ...);
  163. SymExp ADS_Grtext (SymExp, ...);
  164. SymExp ADS_Grvecs (SymExp, SymExp, ...);
  165. SymExp ADS_Handent (SymExp, SymExp);
  166. SymExp ADS_Initget (SymExp,...);
  167. SymExp ADS_Inters (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
  168. SymExp ADS_Load_dialog (SymExp,...);
  169. SymExp ADS_Menucmd (SymExp, SymExp);
  170. SymExp ADS_Mode_tile (SymExp, SymExp,...);
  171. SymExp ADS_Nentsel (SymExp, ...);
  172. SymExp ADS_Nentselp (SymExp, ...);
  173. SymExp ADS_New_dialog (SymExp, SymExp, SymExp,...);
  174. SymExp ADS_Osnap (SymExp, SymExp, SymExp);
  175. SymExp ADS_Polar (SymExp, SymExp, SymExp, SymExp);
  176. SymExp ADS_Prompt (SymExp, SymExp);
  177. SymExp ADS_Redraw (SymExp, ...);
  178. SymExp ADS_Regapp (SymExp, SymExp);
  179. SymExp ADS_Rtos (SymExp, SymExp,...);
  180. SymExp ADS_Set_tile (SymExp, SymExp,...);
  181. SymExp ADS_Setvar (SymExp, SymExp, SymExp);
  182. SymExp ADS_Slide_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
  183. SymExp ADS_Ssadd (SymExp,...);
  184. SymExp ADS_Ssdel (SymExp, SymExp, SymExp);
  185. SymExp ADS_Ssget (SymExp,...);
  186. SymExp ADS_Sslength (SymExp, SymExp);
  187. SymExp ADS_Ssmemb (SymExp, SymExp, SymExp);
  188. SymExp ADS_Ssname (SymExp, SymExp, SymExp);
  189. SymExp ADS_Start_dialog (SymExp);
  190. SymExp ADS_Start_image (SymExp, ...);
  191. SymExp ADS_Start_list (SymExp, SymExp,...);
  192. SymExp ADS_Tablet (SymExp, SymExp, ...);
  193. SymExp ADS_Tblnext (SymExp, SymExp, ...);
  194. SymExp ADS_Tblsearch (SymExp, SymExp, SymExp, ...);
  195. SymExp ADS_Term_dialog (SymExp);
  196. SymExp ADS_Textbox (SymExp, SymExp);
  197. SymExp ADS_Textscr (SymExp);
  198. SymExp ADS_Trans (SymExp, SymExp, SymExp, SymExp, ...);
  199. SymExp ADS_Unload_dialog (SymExp,...);
  200. SymExp ADS_Vector_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
  201. SymExp ADS_Vports (SymExp);
  202. SymExp ADS_Wcmatch (SymExp, SymExp,...);
  203. SymExp ADS_Xdroom (SymExp, ...);
  204. SymExp ADS_Xdsize (SymExp, ...);
  205. SymExp ADS_Xload (SymExp, SymExp,...);
  206. SymExp ADS_Xunload (SymExp, SymExp,...);
  207. SymExp Copy (SymExp);
  208. SymExp GetLocal (HashTable [], int);
  209. SymExp GetSymbol (HashTable [], StrExp);
  210. SymExp LSP_Abs (SymExp, Dummy);
  211. SymExp LSP_Alloc (SymExp, Dummy);
  212. SymExp LSP_And (SymExp, ...);
  213. SymExp LSP_Append (SymExp, ...);
  214. SymExp LSP_Ascii (SymExp, Dummy);
  215. SymExp LSP_Assoc (SymExp, SymExp, Dummy);
  216. SymExp LSP_Atan (SymExp,...);
  217. SymExp LSP_Atof (SymExp, Dummy);
  218. SymExp LSP_Atoi (SymExp, Dummy);
  219. SymExp LSP_Atom (SymExp, Dummy);
  220. SymExp LSP_AtomsFamily (SymExp, SymExp, ...);
  221. SymExp LSP_BitNot (SymExp, Dummy);
  222. SymExp LSP_Boole (SymExp, SymExp, SymExp,...);
  223. SymExp LSP_Boundp (SymExp, Dummy);
  224. SymExp LSP_C_r (SymExp, StrExp, Dummy);
  225. SymExp LSP_Car (SymExp, Dummy);
  226. SymExp LSP_Cdr (SymExp, Dummy);
  227. SymExp LSP_Chr (SymExp, Dummy);
  228. SymExp LSP_Close (SymExp, SymExp);
  229. SymExp LSP_Cons (SymExp, SymExp, Dummy);
  230. SymExp LSP_Cos (SymExp, Dummy);
  231. SymExp LSP_Divide (SymExp,...);
  232. SymExp LSP_Eq (SymExp, SymExp, SymExp);
  233. SymExp LSP_Equal (SymExp, SymExp, SymExp,...);
  234. SymExp LSP_Eval (SymExp, SymExp);
  235. SymExp LSP_Exit (Dummy);
  236. SymExp LSP_Exp (SymExp, SymExp);
  237. SymExp LSP_Expand (SymExp, Dummy);
  238. SymExp LSP_Expt (SymExp, SymExp, SymExp);
  239. SymExp LSP_Fix (SymExp, Dummy);
  240. SymExp LSP_Float (SymExp, Dummy);
  241. SymExp LSP_Gc (Dummy);
  242. SymExp LSP_Gcd (SymExp, SymExp, Dummy);
  243. SymExp LSP_Getenv (SymExp,...);
  244. SymExp LSP_Invoke (StrExp, SymExp, ...);
  245. SymExp LSP_Itoa (SymExp, Dummy);
  246. SymExp LSP_Last (SymExp, Dummy);
  247. SymExp LSP_Length (SymExp, Dummy);
  248. SymExp LSP_LessEqual (SymExp, SymExp, ...);
  249. SymExp LSP_LessThan (SymExp, SymExp, ...);
  250. SymExp LSP_List (SymExp,...);
  251. SymExp LSP_Listp (SymExp, Dummy);
  252. SymExp LSP_Load (SymExp, SymExp, ...);
  253. SymExp LSP_Log (SymExp, SymExp);
  254. SymExp LSP_Logand (SymExp, SymExp, ...);
  255. SymExp LSP_Logior (SymExp, SymExp, ...);
  256. SymExp LSP_Lsh (SymExp, SymExp, Dummy);
  257. SymExp LSP_Max (SymExp,...);
  258. SymExp LSP_Mem (SymExp,...);
  259. SymExp LSP_Member (SymExp, SymExp, Dummy);
  260. SymExp LSP_Min (SymExp,...);
  261. SymExp LSP_Minus (SymExp,...);
  262. SymExp LSP_Minusp (SymExp, Dummy);
  263. SymExp LSP_MoreEqual (SymExp, SymExp, ...);
  264. SymExp LSP_MoreThan (SymExp, SymExp, ...);
  265. SymExp LSP_Not (SymExp, Dummy);
  266. SymExp LSP_Nth (SymExp, SymExp, Dummy);
  267. SymExp LSP_Null (SymExp, Dummy);
  268. SymExp LSP_NumEq (SymExp, SymExp, ...);
  269. SymExp LSP_NumNotEq (SymExp, SymExp, ...);
  270. S